home *** CD-ROM | disk | FTP | other *** search
- // DBDoc.cpp : implementation of the CDBViewDoc class
- //
- // This is a part of the Microsoft Foundation Classes and
- // Templates (MFC&T).
- // Copyright (C) 1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // MFC&T Reference and related electronic documentation provided
- // with the library. See these sources for detailed information
- // regarding the MFC&T product.
- //
-
- #include "stdafx.h"
- #include "DBViewer.h"
-
- #include "DBDoc.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CDBViewDoc
-
- IMPLEMENT_DYNCREATE(CDBViewDoc, CDocument)
-
- BEGIN_MESSAGE_MAP(CDBViewDoc, CDocument)
- //{{AFX_MSG_MAP(CDBViewDoc)
- ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CDBViewDoc construction/destruction
-
- CDBViewDoc::CDBViewDoc()
- {
- m_pListView = NULL;
- m_pTreeView = NULL;
- }
-
- CDBViewDoc::~CDBViewDoc()
- {
- m_pListView = NULL;
- m_pTreeView = NULL;
- }
-
- BOOL CDBViewDoc::OnNewDocument()
- {
- if (!CDocument::OnNewDocument())
- return FALSE;
-
- // TODO: add reinitialization code here
- // (SDI documents will reuse this document)
-
- return TRUE;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CDBViewDoc serialization
-
- void CDBViewDoc::Serialize(CArchive& ar)
- {
- if (ar.IsStoring())
- {
- // TODO: add storing code here
- }
- else
- {
- // TODO: add loading code here
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CDBViewDoc diagnostics
-
- #ifdef _DEBUG
- void CDBViewDoc::AssertValid() const
- {
- CDocument::AssertValid();
- }
-
- void CDBViewDoc::Dump(CDumpContext& dc) const
- {
- CDocument::Dump(dc);
- }
- #endif //_DEBUG
-
- /////////////////////////////////////////////////////////////////////////////
- // CDBViewDoc commands
-
- void CDBViewDoc::RefreshViews()
- {
- if (m_pListView)
- m_pListView->EraseList();
-
- if (m_pTreeView)
- m_pTreeView->PopulateTree();
- }
-
- BOOL CDBViewDoc::OnOpenDocument(LPCTSTR lpszPathName)
- {
- if (m_Session.m_spOpenRowset != NULL)
- m_Session.m_spOpenRowset.Release();
-
- m_strConnect = _T("");
-
- if (m_Connect.Open(AfxGetMainWnd()->GetSafeHwnd()) != S_OK)
- {
- AfxMessageBox(_T("Unable to connect to data source"));
- return FALSE;
- }
- else
- {
- USES_CONVERSION;
-
- if (m_Session.Open(m_Connect) != S_OK)
- {
- AfxMessageBox(_T("Couldn't create session on data source"));
- return FALSE;
- }
-
- CComVariant var;
- m_Connect.GetProperty(DBPROPSET_DATASOURCEINFO, DBPROP_DATASOURCENAME, &var);
- m_strConnect = OLE2T(var.bstrVal);
-
- m_pTreeView->m_pSession = &m_Session;
- m_pListView->m_pSession = &m_Session;
- RefreshViews();
- return TRUE;
- }
-
- return FALSE;
- }
-
- CString CDBViewDoc::GetDSN()
- {
- // pull DSN from database connect string
- CString string = m_strConnect;
- // string = string.Right(string.GetLength() - (string.Find(_T("DSN=")) + 4));
- // string = string.Left(string.Find(_T(";")));
- return string;
- }
-
- CString CDBViewDoc::GetConnect()
- {
- return m_strConnect;
- }
-
- void CDBViewDoc::OnFileOpen()
- {
- OnOpenDocument(NULL);
- }
-
- CDataSource* CDBViewDoc::GetDataSource()
- {
- return &m_Connect;
-
- }
-